home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / osi / isode / vmsisode / vmsisode80_tar.Z / vmsisode80_tar / sockit / source / setuic.mar < prev    next >
Encoding:
Text File  |  1990-06-20  |  2.5 KB  |  93 lines

  1.         .TITLE SYS_SET_UIC
  2. ;
  3.         .IDENT /X01-01/
  4. ;
  5. ;       FACILITY:       SYS - General procedure Library
  6. ;
  7. ;       ABSTRACT:       Rewrite current process's UIC
  8. ;
  9. ;       ENVIRONMENT:    User mode, calls kernel mode routine, requires
  10. ;                       user privelege CMKRNL
  11. ;
  12. ;
  13. ;       AUTHOR:         DSA , ABS STINE
  14. ;       CREATION DATE:  09-SEP-83
  15. ;
  16. ;--
  17. ;++
  18. ;
  19. ;  FUNCTIONAL DESCRIPTION:
  20. ;
  21. ;     Sets process UIC to longword UIC passed from caller
  22. ;
  23. ;       Note: Calling procedure must be linked with SYS$SYSTEM:SYS.STB
  24. ;
  25. ;  CALLING SEQUENCE:   (from high - level language)
  26. ;
  27. ;       ret_status.wlc.v = SYS_SET_UIC ( new_uic.rl )
  28. ;
  29. ;  FORMAL PARAMETERS:
  30. ;
  31. ;       NEW_UIC         The longword containing the new UIC
  32. ;
  33. ;  IMPLICIT INPUTS:
  34. ;
  35. ;       NONE
  36. ;
  37. ;  IMPLICIT OUTPUTS:
  38. ;
  39. ;       Process Control Block  (PCB$L_UIC)
  40. ;
  41. ;  COMPLETION STATUS:
  42. ;
  43. ;       SS$_NORMAL              Success
  44. ;       SS$_NOPRIV              You don't have CMKRNL priv
  45. ;       <other>                 something returned from $CMKRNL
  46. ;
  47. ;  SIDE EFFECTS:
  48. ;
  49. ;       Process UIC is changed
  50. ;
  51. ;******************************************************************************
  52. ;
  53. ;  WARNING ******: DO NOT CHANGE THE FORMAT OF THE ADDRESSING IN THIS ROUTINE.
  54. ;  WARNING         ALMOST NO ERROR CHECKING IS, OR CAN BE DONE. THERE IS NO
  55. ;  WARNING         REAL WAY OF HANDLING AN EXCEPTION WHILE IN KERNEL MODE,
  56. ;                  AND HAVE IT COME BACK TO USER MODE.
  57. ;
  58. ;                  **** IN OTHER WORDS, YOU GOOF IT, YOU LOOSE IT. *****
  59. ;
  60. ;******************************************************************************
  61. ;
  62. ;               integer*4       newuic, SYS_SET_UIC, ERROR
  63. ;               DATA NEWUIC/ 65540 /     ! SAME UIC AS [ 1,4 ]
  64. ;
  65. ;               ERROR = SYS_SET_UIC( NEWUIC )
  66. ;
  67. ;
  68. ;--
  69. ;
  70.         .LIBRARY        /SYS$LIBRARY:LIB.MLB/
  71. ;
  72.         $SSDEF                                  ; system return definitions
  73.         $PCBDEF
  74. ;
  75.         .PSECT  _SYS_CODE, PIC, USR, CON, REL, LCL, SHR, EXE, RD, NOWRT
  76. ;
  77.         .ENTRY  SYS_SET_UIC,^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,R11> ; save all reg
  78. ;
  79.         MOVL    @4(AP),R2               ; GRAB THE UIC AND STUFF INTO R2
  80. ;
  81.         $CMKRNL_S  ROUTIN=SETUIC        ; call kernel routine
  82. 10$:    RET
  83. ;
  84.         .ENTRY  SETUIC,0
  85. ;        MOVL    @#SMP$GL_CURPCB,R0      ; get current process PCB address
  86.     GET_CURPCB    R0
  87.         MOVL    R2 , PCB$L_UIC(R0)      ; set user identification code
  88.         MOVZWL  #SS$_NORMAL,R0          ; SET A ONE IN R0 FOR NORMAL RETURN
  89.         RET
  90. ;
  91. ;
  92.         .END
  93.